There is a growing need in the field of computer networks for discovery and mapping of service functions provided by and on a network. Discovery and mapping of service functions are often difficult because of recent advances in virtualization that have allowed service functions to be maintained in a virtual state, e.g., without being physically present on the network as a separate hardware component. When virtual network services are chained together in this manner, there is no simple way to identify and/or discover the services and how they are chained together.
In the majority of network designs and deployments, network functions are configured physically at a given network element. This requires allocation of physical resources to enable the network functions. With the development of virtualization and new services, the physical resources required to support these network functions have increased at a rapid pace. Therefore, there is a great need for configuring and managing various network services programmatically.
With large scale services being deployed and customized by customers on an as-needed basis, the ability to link various services is complex. Furthermore, the ability to chain various services may be limited to specific vendor and/or device types, making managing and maintenance of these services a great hardship for administrators. As such, enabling new services often requires re-designing all or part of the network in order to create the requisite service chain workflow to incorporate new service functions.
Unlike physical layout topology, mapping out potentially dissimilar services chained together is not achievable with per-layer Operations, Administration, and Maintenance (“OAM”) mechanisms. More importantly, the services may be virtual and not necessarily co-located with other service functions. For example, services like firewall, deep packet inspection (“DPI”), policy configurations, load balancing, etc., may be chained together to create a service chain workflow. By utilizing a DPI OAM, it may not be possible to verify the existence of other service chain functions and the order of the services in the chain. This creates a need to discover service functions and enable service function topology mapping, which may span across multiple devices or entities, or may be limited to a single device, in order to enable all of the services within the service chain. Similarly, there is a need to map out various service chains such that one may identify different service chains, verify their existence on a network, and determine how the service chains are linked to each other, etc.